﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.VisualStudio.TestTools.UnitTesting;
using LPrisaMVC.Entities; 
using LPrisaMVC.WebMVC4;
using LPrisaMVC.DAO;


namespace LPrisaMVC.WebMVC4.Tests.Controllers
{
    
    [TestClass]
    public class CategoriaControllerTest
    {
        [TestMethod]
        public void GetAllFromCategorias()
        {
            CategoriaDAO target = new CategoriaDAO();
            List<CATEGORIA> actual;
            actual = target.GetAllFromCategoria();
            Assert.IsTrue(actual.Count > 1);
        }

        [TestMethod]
        public void GetFromCategoriaById()
        {
            CategoriaDAO target = new CategoriaDAO();
            int id = 1002;
            CATEGORIA actual;
            actual = target.GetFromCategoriaById(id);
            Assert.IsTrue(actual.Id == 1002);
        }

        [TestMethod]
        public void GetAllFromCategoriasByDescripcion()
        {
            CategoriaDAO target = new CategoriaDAO();
            var criterio = "DULCES";
            List<CATEGORIA> actual;
            actual = target.GetFromCategoriaByDescripcion(criterio);
            Assert.IsTrue(actual.Count >= 1);
            //Assert.IsNotNull(actual);
        }

        [TestMethod]
        public void AddCategoria()
        {
            CategoriaDAO catDAO = new CategoriaDAO();
            var porcentaje = Convert.ToDecimal("0.5");
            var ListEsperado = (List<CATEGORIA>)catDAO.GetAllFromCategoria();
            CATEGORIA categoria = new CATEGORIA()
            {
                Descripcion = "",
                Porcentaje = porcentaje
            };
            catDAO.AddCategoria(categoria);
            var ListaCTUAL = (List<CATEGORIA>)catDAO.GetAllFromCategoria();
            Assert.AreEqual(ListEsperado.Count + 1, ListaCTUAL.Count, "Error ");
        }

        [TestMethod]
        public void UpdateCategoria()
        {
            CategoriaDAO target = new CategoriaDAO();
            var ID = 1020;
            var DESCRIPCION = "CATEGORIA ACTUALIZADA";
            var PORCENTAJE = Convert.ToDecimal("0.55");

            CATEGORIA categoria = new CATEGORIA()
            {
                Id = ID,
                Descripcion = ""
            };
            target.UpdateCategoria(categoria);
            var existe = target.GetFromCategoriaById(ID);
            Assert.IsTrue(existe.Descripcion == DESCRIPCION);
        }

        [TestMethod]
        public void RemoveCategoria()
        {
            CategoriaDAO target = new CategoriaDAO();
            var id = 1022;
            target.RemoveCategoria(id);
            var existe = target.GetFromCategoriaById(id);
            Assert.IsTrue(existe == null);

        }
        
    }
}
